﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
namespace RS.Echarts.Models
{
    

    /// <summary>
    /// 表示图例组件中选择器按钮的配置类。
    /// </summary>
    public class SelectorButton
    {
        /// <summary>
        /// 按钮的标题文本，用于显示在选择器按钮上，比如常见的“全选”“反选”等文字描述。
        /// </summary>
        public string Title { get; set; }

        /// <summary>
        /// 按钮的显示状态，默认为true，表示显示该按钮。若设置为false，则对应的选择器按钮将不显示。
        /// </summary>
        public bool Show { get; set; } = true;

        /// <summary>
        /// 按钮的文本样式配置，用于设置按钮上文本的字体、颜色、大小等样式。
        /// </summary>
        public TextStyle TextStyle { get; set; } = new TextStyle();

        /// <summary>
        /// 按钮的背景色，用于设置选择器按钮的背景颜色。
        /// 支持多种颜色表示方式，如十六进制颜色码（例如 "#FFFFFF" 表示白色）、RGB函数（例如 "rgb(255, 255, 255)"）、RGBA函数（例如 "rgba(255, 255, 255, 0.8)"）等。
        /// </summary>
        public Color BackgroundColor { get; set; }

        /// <summary>
        /// 按钮的边框颜色，用于设置选择器按钮边框的颜色。
        /// 支持的颜色格式与BackgroundColor属性相同，例如 "#000000" 表示黑色边框等。
        /// </summary>
        public Color BorderColor { get; set; }

        /// <summary>
        /// 按钮的边框宽度，以像素为单位，设置选择器按钮边框的粗细程度。
        /// 例如，设置为1表示边框宽度为1像素，设置为2则边框更粗，宽度为2像素等。
        /// </summary>
        public int BorderWidth { get; set; }

        /// <summary>
        /// 按钮的边框类型，可选值为'solid'（实线）、'dashed'（虚线）、'dotted'（点线），用于定义选择器按钮边框线的样式。
        /// </summary>
        public string BorderType { get; set; } = "solid";

        /// <summary>
        /// 按钮边框虚线偏移量，在边框类型为虚线（'dashed'）或点线（'dotted'）时，用于设置虚线的起始偏移位置，单位为像素。
        /// </summary>
        public int BorderDashOffset { get; set; }

        /// <summary>
        /// 按钮的圆角半径，单位为像素，用于设置选择器按钮的圆角程度。
        /// 可以是一个数字，表示四个角相同的圆角半径；也可以是一个包含四个数字的数组，分别表示左上角、右上角、右下角、左下角的圆角半径，例如 [5, 5, 0, 0] 表示左上角和右上角为圆角半径5像素，右下角和左下角为直角。
        /// </summary>
        public int[] BorderRadius { get; set; }

        /// <summary>
        /// 按钮的内边距，单位为像素，可以是一个数字表示四个方向相同的内边距，也可以是一个包含四个数字的数组，分别表示上、右、下、左的内边距。
        /// 例如，设置为[5, 10, 5, 10]表示按钮上内边距为5像素，右内边距为10像素，下内边距为5像素，左内边距为10像素。
        /// </summary>
        public int[] Padding { get; set; }

        /// <summary>
        /// 按钮阴影的模糊大小，用于设置选择器按钮阴影的模糊程度，数值越大阴影越模糊，单位为像素。
        /// 需同时结合ShadowColor、ShadowOffsetX和ShadowOffsetY等属性来完整呈现阴影效果。
        /// </summary>
        public int ShadowBlur { get; set; }

        /// <summary>
        /// 按钮阴影颜色，用于设置选择器按钮阴影的颜色，支持的颜色格式与BackgroundColor属性相同。
        /// 注意：此配置项生效的前提是，设置了相应的显示条件（如Show为true等）。
        /// </summary>
        public Color ShadowColor { get; set; }

        /// <summary>
        /// 按钮阴影水平方向上的偏移距离，以像素为单位，正值表示阴影向右偏移，负值表示向左偏移，用于控制选择器按钮阴影在水平方向的位置。
        /// 注意：此配置项生效的前提是，设置了相应的显示条件（如Show为true等）。
        /// </summary>
        public int ShadowOffsetX { get; set; }

        /// <summary>
        /// 按钮阴影垂直方向上的偏移距离，以像素为单位，正值表示阴影向下偏移，负值表示向上偏移，用于控制选择器按钮阴影在垂直方向的位置。
        /// 注意：此配置项生效的前提是，设置了相应的显示条件（如Show为true等）。
        /// </summary>
        public int ShadowOffsetY { get; set; }

        /// <summary>
        /// 按钮的宽度，单位为像素，用于设置选择器按钮的宽度尺寸大小。
        /// </summary>
        public int Width { get; set; }

        /// <summary>
        /// 按钮的高度，单位为像素，用于设置选择器按钮的高度尺寸大小。
        /// </summary>
        public int Height { get; set; }

        /// <summary>
        /// 按钮的点击事件相关配置，比如可以配置点击后执行的回调函数等（具体回调函数逻辑需根据实际业务需求来编写代码实现）。
        /// </summary>
        public Action Click { get; set; }
    }
}
